package com.wanmait.community.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.Transient;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 设备维修表
 */
@Data
@Accessors(chain = true)
@TableName(value = "admin_repair")
public class AdminRepair {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 维修时间
     */
    @TableField(value = "repair_time")
    private Date repairTime;

    /**
     * 维修员工id
     */
    @TableField(value = "repair_staff_id")
    private Integer repairStaffId;

    /**
     * 维修费用
     */
    @TableField(value = "repair_fee")
    private BigDecimal repairFee;

    /**
     * 维修说明
     */
    @TableField(value = "repair_content")
    private String repairContent;

    /**
     * 创建用户id
     */
    @TableField(value = "creat_by")
    private Integer creatBy;

    /**
     * 创建时间
     */
    @TableField(value = "creat_time")
    private Date creatTime;

    /**
     * 更新用户id
     */
    @TableField(value = "update_by")
    private Integer updateBy;

    /**
     * 更新时间
     */
    @TableField(value = "update_time")
    private Date updateTime;

    /**
     * 备注
     */
    @TableField(value = "remark")
    private String remark;

    /**
     * 逻辑删除
     */
    @TableField(value = "`enable`")
    private Boolean enable;
    /**
     * 维修状态
     */
    @TableField(value = "`repair_status")
    private Boolean repairStatus;
    /**
     * 回访状态,默认0未回访，如果业主回访满意，则改为1，如果不满意，仍为0，
     * 解决前端已经提交满意回访，刷新当前页面还弹出回访弹窗的问题，持久化回访状态到数据库
     */
    @TableField(value = "follow_status")
    private Boolean followStatus;
    /**
     * 多表关联查询新增的对象:
     * user
     */
    @TableField(exist = false)
    private User user;
    /**
     * 多表关联查询新增的对象:
     * admin
     */
    @TableField(exist = false)
    private Admin admin;
    /**
     * 多表关联查询新增的对象:
     * (因为业主端看板显示的是admin_repair表的内容,
     * 只有admin_repair表里有修理状态和维修工姓名，
     * 而业主提交报修信息是交到user_repair,
     * 改为 List 类型,因为可能1个业主对应多个报修信息
     * )
     * userRepair
     */
    @TableField(exist = false)
    private UserRepair userRepair;

    @TableField(exist = false)
    private AfterRepairPic afterRepairPic;

    @TableField(exist = false)
    private BeforeRepairPic beforeRepairPic;
    /**
     * 多表关联查询新增的对象:
     * repairFollow
     * 因为物业端要查看每个维修事件的回访详情，另外，一个adminRepair对应一个repairFollow，
     * 如果业主不满意，再次维修回访是修改首次提交的repairFollow对象，repairFollow.updateTime更新时间在数据库端改为不自动生成
     */
    @TableField(exist = false)
    private RepairFollow repairFollow;
//=======================================================
    @Transient// 表示该字段不持久化到数据库
    private Boolean imageDeleted = false;
    // 记得生成getter和setter
    public Boolean isImageDeleted() {
        return imageDeleted;
    }
    // 必须存在（不能只用isImageDeleted）
    public Boolean getImageDeleted() {
        return imageDeleted;
    }

    public void setImageDeleted(Boolean imageDeleted) {
        this.imageDeleted = imageDeleted;
    }
}